import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2022-12-03
 * Time: 21:41
 */
public class Solution {
    //dp
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> ans=new ArrayList<>();
        //第一个结果为空
        ans.add(new ArrayList<Integer>());
        for(int i=0;i<nums.length;i++){
            //遍历之前的结果
            //将之前的结果加上当前元素并重新放到结果集内
            //注意不要修改之前的结果
            int size=ans.size();//因为ans的大小一直在增加,所以要提前记录之前的大小,
            //否则会出现异常Concurrent...
            for(int j=0;j<size;j++){
                //注意这里要new一个新的list
                List<Integer> newList=new ArrayList<>(ans.get(j));
                //添加当前元素并放到结果集内
                newList.add(nums[i]);
                ans.add(newList);
            }
        }
        return ans;
    }
}
